-Готовые"
-Фотографии," -Линки," -Эмулятор," -Истории,"

АГАТ: Документация, книжки, статьи, размышлизмы [ Описание и схема контроллера 800 кб ]

Начинающему агатоводу

Документация от производителя (DJVU)

Документация от производителя (TXT)

Кусочки, срисовки

Книжки

ИНФО

МПСС

Библиотека Серкова

Юмор

Антология Бейсика и ДОС

Разные мысли # 1

Разные мысли # 2

ToDo

Этот текст - краткий экскурс в то, как же устроен и работает этот загадочный дисковод 800 кб в "Агате". Так как ни схемы ни толковой документации по нему не существует, а устройство достаточно сложное и интересное, я решил, насколько хватит мозгов, разобраться в его устройстве. Получилось не до конца, самое сложное и интересное осознать не удалось, но даже то, что сделано - уже хорошо. В том числе для тех двух контроллеров, которые удалось отремонтировать. Слово "краткий" означает, что я исхожу из предположения, что читатель свободно владеет знаниями о цифровых микросхемах, их номенклатуре, представляет себе шину управления дисководами FD55 и им подобным, а также программный интерфейс 800 кб контроллера.

А где-то через год после написания этого текста удалось выловить похожий, но более подробный (вероятно - официальный) документ: часть 1, часть 2.

Сначала качаем схему и компоновку (1,2 Мб). Первая страница - входные цепи - системная шина и селектор адресов, который коммутирует различные части контроллера с системной шиной при обращении ЦПУ к контроллеру. Вторая страница - то же самое + выходные цепи - буферные схемы интерфейса с дисководом. Третья страница - схема канала кодирования/декодирования данных. Четвертая - подписи номеров микросхем на плате. Там высокое разрешение, так что видны и точные названия кристалов. Так как официальной схемы я не видел, мои подписи с ней, разумеется, не совпадут.

На моих схемах нет двух микросхем - кр580вв55а. Но все линии, которые к ним идут, показаны, например, так: "19.B4 \\ D14" - значит, кристалл D14, лапка 19, 4-й бит порта B. Либо так: "D14.C7" - это кристал D14, 7-й бит порта C. И ещё: из-за ошибки у меня получилось две микросхемы D6, поэтому одна из них позднее была переименована в D6'.

Коротко: что и зачем ? Условно можно разделить контроллер на следующие блоки:

  • Декодер адреса: его задача: сформировать сигналы выбора отдельных блоков контроллера на основании сигналов R/!W, !IOSel, !ROMSel и младших бит адресной шины. Сюда же можно отнести шинный формирователь.
  • ПЗУ драйвера: понятно.
  • Умножитель частоты: контроллеру нужна частота 4 МГц, она получается умножением на 2 частоты 2.04 МГц, получаемого с системной шины.
  • Выходные буфера: усиливают сигналы, отправляемые дисководу. Сюда же можно отнести формировать сигнала Step- движения головки и сигналов выбора привода.
  • Интеллектуальные регистры-защёлки. Они хранят слова состояния, режимов, данные записи и чтения.
  • Кодер/декодер записи/чтения.

Декодер адреса

Сформирован элементами D2, D3, D4, D5, D6', D8.

D2 (двунаправленный канальный усилитель): с одной стороны у него подключается системная шина, с другой - выходы ПЗУ D1 и параллельно включенные магистрали регистров D14, D15.

На остальных элементах собран декодер, выходные сигналы которого подключаются к элементам D14, D15 на входы выбора адреса и операции (!запись, !чтение). Регистры D14, D15 активизируются при обращении к младшим 8 адресам управления (C0x0..C0x7). Кроме того, вывод 11 кристалла D5 идёт на D8, который активируется для старших 8 адресов управления (C0x8..C0xF) и выдаёт сигналы, вызывающие запись синхросбоя (C0x8), сдвиг головки (C0x9) и сброс флага сбоя синхронизации (C0xA).

Первый элемент микросхемы D3 просто инвертирует общесистемный сигнал сброса для передачи на микросхемы D14, D15.

Умножитель частоты

Образован элементами D6', D7, D10, D20. Действует следующим образом: на каждую смену сигнала 2 МГц RC-цепочками формируется короткий импульс (т.е. короткий импульс при спаде 2 МГц и при подъёме). В дальнейшем эти импульсы растягиваются до 1/8 мкс элементом D20. Схемы этого формирователя менялись, карандашем набросан более старый вариант.

На следующих рисунках красный - сигнал синхронизации 2.04 МГц, синий - описываемый сигнал.

Входной сигнал 2.04 МГц на входе 13 м/с D13.

 

 

С выхода 12 этой м/с снимается инвертированный сигнал.

 

 

Инвертор D10 с открытым коллектором на выходе 4 немного искажает сигнал при инвертировании..

 

 

Сигнал на входе 4 м/с D6'.

 

 

Сигнал на входе 5 м/с D6'.

 

 

Выход 6 м/с D6'.

 

 

С выхода 12 м/с D20 снимается уже почти прямоугольный, со скважностью 1:1, сигнал синхронизации 4 МГц.

 

 

Для некоторых частей контроллера нужен этот же сигнал, но в инверсном виде. Он снимается с вывода 6 м/с D7.

 

 

Выходные буфера

D12, D13 - магистральные усилители. Просто усиливают сигналы перед передачей в канал. Но сюда же можно отнести и одновибратор, образованный микросхемой D9: по входу 9 она получает короткий импульс при обращении к адресу C0x9 и растягивает примерно до 1.5 мкс. Ещё один одновибратор: D11, вероятно, он предназначен для того, чтобы поддерживать работу дисковода в течение некоторого времени после программной остановки. Это позволяет заканчивать чтение сектора командой выключения дисковода и начинать следующий сектор командой включения - если интервал будет небольшим, двигатель не будет останавливаться.

Ещё одна особенность: формирователь сигнала выбора привода: в основном, это м/с D12. Её вывод 3 подключен к разъёму шлейфа дисковода, на лапку A1. В штатном кабеле этот контакт не задействован, сигнал на нём будет появлятся при обращении к любому из приводов. Возможно, планировалось на него повесить светодиод индикации включения дисководов.

Интеллектуальные регистры-защёлки

Не знаю как ещё назвать эти микросхемы: D14, D15. Каждая из них имеет три восьмиразрядных регистра, каждый из которых может хранить и выводить данные, переданные от ЦПУ либо вводить данные по запросу в ЦПУ. Причем D14 стандартным драйвером программируется так: порты A, B - ввод, C - вывод. А вот D15 переводится в режим аппаратного стробирования и раскладка становится такой: A - вывод со стробированием, B - ввод со стробированием, сигналы управления в C. При этом часть C формируется самой микросхемой, а часть вводится извне напрямую.

D14 управляет различными "тупыми" функциями, как -то "включить", "выключить", "привод", "сторона", "направление", "index", "трек 0", "готовность", "защита записи" и т.д. - т.е. выполняет функции, напоминающие PC-шный LPT-порт - просто передаёт от дисковода процессору, а от процессора - дисководу медленно и редко меняющиеся биты.

D15 действует значительно сложнее: она передаёт только данные для записи/чтения, причём для канала чтения передаёт только сигнал готовности от декодера к ЦПУ (нет смысла передавать готовность от ЦПУ к декодеру - он же не может тормознуть диск с точностью до бита, если процессор не готов), а для записи - от ЦПУ к декодеру (по той же причине).

Часть микросхемы D6' тоже можно отнести к этому блоку: по входам 9 и 10 она получает сигналы готовности регистров данных чтения или записи от D15 (вообще-то они предназначены для генерации прерывания процессора, но в этой схеме использованы по другому) и выставляет их в разряд C7 той же D15, откуда их в режиме программного пуллинга считывает драйвер.

Кодер/декодер записи/чтения

Если до этого места всё было вполне просто и понятно, то дальше начинаются сложности. Сигнал чтения подаётся на вход 1 м/с D7, затем через D21 и D18.4..D18.2 поступает на очень хитрый табличный сдвиговый регистр, образованный ПЗУ D6 и линейками защёлок D18 и D19. Именно эта схема для своего тактирования требует 4 МГц. Очевидно, что различные входные последовательности бит будут формировать различные данные на выходе, часть из которых будет просто передаваться сдвиговому регистру D16 на вход 11, а часть - счётчику D23, который в конце концов сформирует либо сигнал сбоя синхронизации, который будет запомнен флажком D21, либо сигналы готовности данных (причем он делает это как для режима чтения так и для режима записи), которые будут переданы D15 и вызовут мгновенную передачу данных от D16 в D15 по параллельному каналу. После этого D16 может принимать очередной байт, а процессор когда нибудь прочитает (если успеет) данные из D15.

В режиме записи всё почти также загадочно. Данные от D15 передаются по параллельному каналу на D16, откуда побитно передаются на D17. Отсюда они, смешиваясь с сигналами "предкомпенсация" и "сильная предкомпенсация", попадают в табличный преобразователь D25. Судя по тому, что с него сигнал передаётся на счётчик D22, который работает в режиме постоянного увеличения с фиксированной частотой 4 МГц, вероятно, в D25 хранится таблица соответствия некоторых ключевых комбинаций бит длительности записываемого на диск импульса. Но это только предположение. Кроме того, на вход 11 D22 заводится сигнал с уже знакомого табличного сдвигового регистра: D6, D18, D19. И он же, по линии 23, управляет м/с D17, которая также участвует в формировании сигналов записи. В то же время, в режиме записи, единственный входной сигнал: подаваемый на вход 1 м/с D21 сигнал записи синхросбоя. Возможно, только формированием этой последовательности и занимается табличный сдвиговый регистр, когда контроллер находится в режиме записи ?

В канале тишина, данные от ЦПУ не поступают, но на вход 1 м/с D20 всё равно поступают импульсы. Синий - D20.1, Красный - синхро.

 

 

Так D20 формирует импульс записи: Синий - выход D20.13, Красный - вход D20.1.

 

 

Выход D20 по отношению к синхронизации: Синий - D20.13, Красный - синхро.

 

 

У меня есть файлы содержимого D25 и D6, но к пониманию общей идеи их изучение не привело. Они есть в разделе "прошивки".

Дальше всё просто: сигнал с D22 попадает на одновибратор D20, который формирует импульсы длительностью 0.5 мкс, либо - в старых версиях контроллера - м/с D20 входила в умножитель частоты, а импульсы записи получались простым инвертированием сигнала, получаемого от D22.

Владимир
deka sobaka itc точка tsu точка ru
deka пёсик ssmu точка ru

Зеркало сайта